import { defineConfig } from 'vite';
import cesium from 'vite-plugin-cesium';

export default defineConfig(({ mode }) => {
  // 检测是否为开发调试模式（不混淆）
  const isDebugMode = mode === 'debug';
  
  return {
    plugins: [
      cesium()
    ],
    build: {
      outDir: 'dist',
      lib: {
        entry: './source/index.js',
        name: 'CesiumExtensions', // 全局变量名称，支持CesiumExtensions.xxx格式
        fileName: (format) => {
          if (format === 'es') return 'index.js';
          if (format === 'cjs') return isDebugMode ? 'CesiumExtensions.debug.cjs' : 'CesiumExtensions.cjs';
          return isDebugMode ? 'CesiumExtensions.debug.js' : 'CesiumExtensions.min.js'; // UMD格式
        },
        formats: ['es', 'cjs', 'umd'] // 支持多种模块格式
      },
      rollupOptions: {
        external: ['cesium'],
        output: {
          globals: {
            cesium: 'Cesium'
          },
          // 直接使用named导出模式
          exports: 'named',
          // 开发调试模式下保留源代码映射
          sourcemap: isDebugMode,
          // 指定CSS等资源文件的命名规则
          assetFileNames: 'CesiumExtensions.css'
        }
      },
      // 开发调试模式下不进行代码压缩和混淆
      minify: isDebugMode ? false : 'terser',
      terserOptions: {
        compress: {
          drop_console: !isDebugMode, // 调试模式保留控制台输出
          drop_debugger: !isDebugMode // 调试模式保留调试器语句
        },
        mangle: !isDebugMode // 调试模式不进行变量名混淆
      }
    },
    server: {
      port: 3000
    }
  };
});